﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace GestorDeFlotasDesktop.RegistrarViaje
{
    public partial class RegistrarViajes : Form
    {
        public RegistrarViajes()
        {
            InitializeComponent();
            tb_chofer_index.Visible = tb_cliente_index.Visible = tb_turno_index.Visible = tb_tipo_viaj_index.Visible = false;
            using (SqlConnection con = Modelo.Modelo.createConnection())
            {
                SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM NUNCA_TAXI.TiposViaje", con);
                DataTable dt = new DataTable();
                da.Fill(dt);
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    cb_tipo_viaje.Items.Add(dt.Rows[i]["Ti_DescripcionTipoViaje"].ToString());
                }

                da = new SqlDataAdapter("SELECT * FROM NUNCA_TAXI.Turnos WHERE Tu_Habilitado = 1", con);
                dt = new DataTable();
                da.Fill(dt);
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    cb_turno.Items.Add(dt.Rows[i]["Tu_Descripcion"].ToString());
                }

                da = new SqlDataAdapter("SELECT * FROM NUNCA_TAXI.Choferes WHERE Ch_Habilitado = 1", con);
                dt = new DataTable();
                da.Fill(dt);
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    cb_chofer.Items.Add("(" + dt.Rows[i]["Id_Chofer"].ToString() + ") (" + dt.Rows[i]["Ch_Nombre"].ToString() + ") (" + dt.Rows[i]["Ch_Apellido"].ToString() + ") (" + dt.Rows[i]["Ch_Dni"].ToString() + ")");
                }

                da = new SqlDataAdapter("SELECT * FROM NUNCA_TAXI.Clientes WHERE Cl_Habilitado = 1", con);
                dt = new DataTable();
                da.Fill(dt);
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    cb_cliente.Items.Add("(" + dt.Rows[i]["Id_Cliente"].ToString() + ") (" + dt.Rows[i]["Cl_Nombre"].ToString() + ") (" + dt.Rows[i]["Cl_Apellido"].ToString() + ") (" + dt.Rows[i]["Cl_Dni"].ToString() + ")");
                }
            }
        }

        private void RegistrarViajes_Load(object sender, EventArgs e)
        {
        }

        private void cb_chofer_SelectedIndexChanged(object sender, EventArgs e)
        {
            string[] split = cb_chofer.SelectedIndex.ToString().Split();
            string indice = split[0];
            int numero = Int32.Parse(indice) + 1;
            tb_chofer_index.Text = numero.ToString();
        }

        private void cb_turno_SelectedIndexChanged(object sender, EventArgs e)
        {
            string[] split = cb_turno.SelectedIndex.ToString().Split();
            string indice = split[0];
            int numero = Int32.Parse(indice) + 1;
            tb_turno_index.Text = numero.ToString();
        }

        private void cb_tipo_viaje_SelectedIndexChanged(object sender, EventArgs e)
        {
            string[] split = cb_tipo_viaje.SelectedIndex.ToString().Split();
            string indice = split[0];
            int numero = Int32.Parse(indice);
            tb_tipo_viaj_index.Text = numero.ToString();
        }

        private void cb_cliente_SelectedIndexChanged(object sender, EventArgs e)
        {
            string[] split = cb_cliente.SelectedIndex.ToString().Split();
            string indice = split[0];
            int numero = Int32.Parse(indice) + 1;
            tb_cliente_index.Text = numero.ToString();
        }

        private void aceptar_Click(object sender, EventArgs e)
        {
            using (SqlConnection con = Modelo.Modelo.createConnection())
            {
                SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM NUNCA_TAXI.Turnos WHERE Tu_Descripcion = '" + cb_turno.SelectedItem.ToString() + "'", con);
                DataTable dt = new DataTable();
                da.Fill(dt);
                decimal valor_ficha = Convert.ToDecimal(dt.Rows[0]["Tu_Valor_Ficha"].ToString());
                decimal importe = Convert.ToDecimal(tb_fichas.Text) * valor_ficha;

                da = new SqlDataAdapter("SELECT T.Id_Taxi FROM NUNCA_TAXI.Taxis T INNER JOIN NUNCA_TAXI.ChoferesTurnosTaxis ON T.Id_Taxi = NUNCA_TAXI.ChoferesTurnosTaxis.Id_Taxi INNER JOIN NUNCA_TAXI.Relojes ON T.Id_Reloj = NUNCA_TAXI.Relojes.Id_Reloj WHERE Ta_Habilitado = 1 AND Re_Habilitado = 1 AND Id_Turno = " + tb_turno_index.Text + " AND Id_Chofer = " + tb_chofer_index.Text, con);
                dt = new DataTable();
                da.Fill(dt);
                string id_taxi = dt.Rows[0]["Id_Taxi"].ToString();

                SqlCommand comando = new SqlCommand("INSERT INTO NUNCA_TAXI.Viajes(Id_Cliente,Id_Chofer,Id_Turno,Id_Taxi,Id_TipoViaje,Vi_Cant_Fichas,Vi_Fecha,Vi_Importe) VALUES(@cliente,@chofer,@turno,@taxi,@tipo_viaje,@cant_fichas,@fecha,@importe)", con);
                comando.Parameters.AddWithValue("cliente", tb_cliente_index.Text);
                comando.Parameters.AddWithValue("chofer", tb_chofer_index.Text);
                comando.Parameters.AddWithValue("turno", tb_turno_index.Text);
                comando.Parameters.AddWithValue("taxi", id_taxi);
                comando.Parameters.AddWithValue("tipo_viaje", tb_tipo_viaj_index.Text);
                comando.Parameters.AddWithValue("cant_fichas", tb_fichas.Text);
                comando.Parameters.AddWithValue("fecha", dt_fecha.Value);
                comando.Parameters.AddWithValue("importe", importe);

                try
                {
                    Modelo.Modelo.openConnection(con);
                    comando.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                finally
                {
                    cb_tipo_viaje.SelectedIndex = -1;
                    cb_turno.SelectedItem = -1;
                    cb_cliente.SelectedIndex = -1;
                    cb_chofer.SelectedIndex = -1;
                    tb_cliente_index.Text = "";
                    tb_chofer_index.Text = "";
                    tb_turno_index.Text = "";
                    tb_tipo_viaj_index.Text = "";
                    tb_fichas.Text = "";
                    dt_fecha.Value = System.DateTime.Now;
                    Modelo.Modelo.closeConnection(con);
                }
            }
        }
    }
}
